//package org.example.util;
//
//import javax.imageio.ImageIO;
//import java.awt.*;
//import java.awt.image.BufferedImage;
//import java.io.ByteArrayInputStream;
//import java.io.IOException;
//
//public class ImagePreprocessor {
//
//    public static BufferedImage preprocessImage(byte[] imageBytes,
//                                                int targetWidth,
//                                                int targetHeight) throws IOException {
//        ByteArrayInputStream bais = null;
//        try {
//            bais = new ByteArrayInputStream(imageBytes);
//            BufferedImage originalImage = ImageIO.read(bais);
//            if (originalImage == null) {
//                throw new IOException("无法解码图片");
//            }
//
//            // 转换为RGB格式
//            BufferedImage rgbImage = new BufferedImage(
//                    originalImage.getWidth(),
//                    originalImage.getHeight(),
//                    BufferedImage.TYPE_INT_RGB);
//            rgbImage.getGraphics().drawImage(originalImage, 0, 0, null);
//
//            // 调整大小
//            BufferedImage resizedImage = new BufferedImage(
//                    targetWidth,
//                    targetHeight,
//                    BufferedImage.TYPE_INT_RGB);
//
//            Graphics2D g = resizedImage.createGraphics();
//            g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
//                    RenderingHints.VALUE_INTERPOLATION_BILINEAR);
//            g.drawImage(rgbImage, 0, 0, targetWidth, targetHeight, null);
//            g.dispose();
//
//            return resizedImage;
//        } finally {
//            if (bais != null) {
//                bais.close();
//            }
//        }
//    }
//
//    public static float[][][][] convertToModelInput(BufferedImage image,
//                                                    float[] mean,
//                                                    float[] std) {
//        int width = image.getWidth();
//        int height = image.getHeight();
//        float[][][][] inputArray = new float[1][3][height][width];
//
//        for (int y = 0; y < height; y++) {
//            for (int x = 0; x < width; x++) {
//                int pixel = image.getRGB(x, y);
//                inputArray[0][0][y][x] = (((pixel >> 16) & 0xFF) / 255.0f - mean[0]) / std[0];
//                inputArray[0][1][y][x] = (((pixel >> 8) & 0xFF) / 255.0f - mean[1]) / std[1];
//                inputArray[0][2][y][x] = ((pixel & 0xFF) / 255.0f - mean[2]) / std[2];
//            }
//        }
//
//        return inputArray;
//    }
//}